package com.lifeverse.entity.enums;

/**
 * 价值评估状态枚举
 * 定义价值评估的状态
 */
public enum ValueAssessmentStatus {
    
    /**
     * 待评估 - 评估任务已创建，等待开始
     */
    PENDING("待评估", "评估任务已创建，等待开始"),
    
    /**
     * 评估中 - 正在进行价值评估
     */
    IN_PROGRESS("评估中", "正在进行价值评估"),
    
    /**
     * 数据收集中 - 正在收集评估所需数据
     */
    DATA_COLLECTION("数据收集中", "正在收集评估所需的数据和信息"),
    
    /**
     * 分析中 - 正在分析收集的数据
     */
    ANALYZING("分析中", "正在分析收集的数据和信息"),
    
    /**
     * 验证中 - 正在验证评估结果
     */
    VALIDATING("验证中", "正在验证评估结果的准确性"),
    
    /**
     * 已完成 - 评估已完成
     */
    COMPLETED("已完成", "价值评估已完成"),
    
    /**
     * 需要复审 - 评估结果需要复审
     */
    NEEDS_REVIEW("需要复审", "评估结果需要进一步复审"),
    
    /**
     * 已批准 - 评估结果已被批准
     */
    APPROVED("已批准", "评估结果已被批准"),
    
    /**
     * 已拒绝 - 评估结果被拒绝
     */
    REJECTED("已拒绝", "评估结果被拒绝，需要重新评估"),
    
    /**
     * 已取消 - 评估任务被取消
     */
    CANCELLED("已取消", "评估任务被取消"),
    
    /**
     * 已过期 - 评估结果已过期
     */
    EXPIRED("已过期", "评估结果已过期，需要重新评估");
    
    private final String displayName;
    private final String description;
    
    ValueAssessmentStatus(String displayName, String description) {
        this.displayName = displayName;
        this.description = description;
    }
    
    public String getDisplayName() {
        return displayName;
    }
    
    public String getDescription() {
        return description;
    }
    
    /**
     * 判断是否为活跃状态
     */
    public boolean isActive() {
        return this == IN_PROGRESS || this == DATA_COLLECTION || this == ANALYZING || this == VALIDATING;
    }
    
    /**
     * 判断是否已完成
     */
    public boolean isCompleted() {
        return this == COMPLETED || this == APPROVED || this == REJECTED || this == CANCELLED;
    }
    
    /**
     * 判断是否需要处理
     */
    public boolean needsAction() {
        return this == PENDING || this == NEEDS_REVIEW;
    }
    
    /**
     * 判断是否可以开始评估
     */
    public boolean canStartAssessment() {
        return this == PENDING;
    }
    
    /**
     * 判断是否可以取消
     */
    public boolean canCancel() {
        return this == PENDING || this == IN_PROGRESS || this == DATA_COLLECTION || 
               this == ANALYZING || this == VALIDATING || this == NEEDS_REVIEW;
    }
}